package view;

import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.EmptyBorder;

import components.MyInternalFrame;

import model.Cidade;
import util.Acoes;
import dao.DAOFactory;

//public class CidadeView extends JFrame {
public class CidadeView extends MyInternalFrame {

	private JPanel contentPane;
	private JTextField textCodigo;
	private JTextField textNome;
	private JComboBox cbEstado;
	private JButton btnLimpar;
	private JButton btnAcao;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					CidadeView frame = new CidadeView(Acoes.ADD);
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public CidadeView(int acao) {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel lblCdigo = new JLabel("C\u00F3digo:");
		lblCdigo.setBounds(36, 40, 46, 14);
		contentPane.add(lblCdigo);
		
		textCodigo = new JTextField();
		textCodigo.setEditable(false);
		textCodigo.setBounds(84, 37, 86, 20);
		contentPane.add(textCodigo);
		textCodigo.setColumns(10);
		
		JLabel lblNome = new JLabel("Nome:");
		lblNome.setBounds(36, 87, 46, 14);
		contentPane.add(lblNome);
		
		JLabel lblEstado = new JLabel("Estado:");
		lblEstado.setBounds(36, 127, 46, 14);
		contentPane.add(lblEstado);
		
		textNome = new JTextField();
		textNome.setBounds(84, 84, 249, 20);
		contentPane.add(textNome);
		textNome.setColumns(10);
		
		cbEstado = new JComboBox();
		for (String estado: DAOFactory.getCidadeDAO().findAllEstados() ) {
			cbEstado.addItem( estado );
		}
		
		cbEstado.setBounds(84, 124, 249, 20);
		contentPane.add(cbEstado);
		
		btnLimpar = new JButton("Limpar");
		btnLimpar.setBounds(244, 190, 89, 23);
		contentPane.add(btnLimpar);
		
		btnAcao = new JButton();
		
		switch ( acao ) {
			case Acoes.ADD:
				btnAcao.setText(Acoes.R_ADD);
				btnAcao.addActionListener( new ActionListener() {
					@Override
					public void actionPerformed(ActionEvent e) {
						DAOFactory.getCidadeDAO().insert( getCidade() );
					}
				});
				break;
			case Acoes.EDIT:
				btnAcao.setText(Acoes.R_EDIT);
				btnAcao.addActionListener( new ActionListener() {
					@Override
					public void actionPerformed(ActionEvent e) {
						DAOFactory.getCidadeDAO().update( getCidade() );
					}
				});
				break;
			case Acoes.DEL:
				btnAcao.setText(Acoes.R_DEL);
				btnAcao.addActionListener( new ActionListener() {
					@Override
					public void actionPerformed(ActionEvent e) {
						DAOFactory.getCidadeDAO().delete(getCidade() );
					}
				});
				break;
		default:
			break;
		}
		
		btnAcao.setBounds(84, 190, 89, 23);
		contentPane.add(btnAcao);
	}

	public void setCidade(Cidade c) {
		textCodigo.setText( c.getIdCidade() == 0 ? "" :  c.getIdCidade() + "");
		textNome.setText( c.getNmCidade() );
		cbEstado.setSelectedItem( c.getSgEstado() );
	}
	
	public Cidade getCidade() {
		Cidade c = new Cidade();
		
		try {
			c.setIdCidade( Integer.parseInt( textCodigo.getText() ) );
		} catch (NumberFormatException e) {
			System.out.println("a acao e adicionar sileciou o erro");
		}
		
		c.setNmCidade( textNome.getText() );
		c.setSgEstado( (String) cbEstado.getSelectedItem() ); 
		
		return c;
	}
	
	
}
